package com.easylinkin.linkappapi.progress.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.easylinkin.linkappapi.bigScreen.vo.CountInfoVo;
//import com.easylinkin.linkappapi.bigScreen.vo.ProgressCountParamVo;
//import com.easylinkin.linkappapi.bigScreen.vo.ProgressInfoRecordVo;
import com.easylinkin.linkappapi.progress.entity.ProgressInfo;
import com.easylinkin.linkappapi.progress.entity.dto.ProgressInfoDTO;
import com.easylinkin.linkappapi.progress.entity.dto.ScreenProgressInfoDTO;
import com.easylinkin.linkappapi.progress.entity.vo.ProgressInfoVo;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * ProgressInfo表数据库访问层
 *
 * @author zhengwen
 * @date 2023/11/13
 */
public interface ProgressInfoMapper extends BaseMapper<ProgressInfo> {


    /**
     * 查询分页
     *
     * @param page            分页参数对象
     * @param appProgressInfo 过滤参数对象
     * @return 查询分页结果
     */
    IPage<ProgressInfo> selectPage(Page page, @Param("appProgressInfo") ProgressInfo appProgressInfo);

    /**
     * 查询单条
     *
     * @param id 主键id
     * @return 查询结果
     */
    ProgressInfo getOneById(@Param("id") Serializable id);

    /**
     * 分页查询所有dto数据
     *
     * @param page           分页对象
     * @param progressInfoVo 查询对象
     * @return 所有数据
     */
    IPage<ProgressInfoDTO> selectDtoPage(Page page, @Param("progressInfoVo") ProgressInfoVo progressInfoVo);

    /**
     * 根据父级ids字符串查询
     *
     * @param parentIdsStr 父级ids字符串
     * @return 查询结果
     */
    List<ProgressInfo> queryByParentIdsStr(@Param("parentIdsStr") String parentIdsStr);

    /**
     * 根据条件查询大屏进度任务信息
     *
     * @param page           分页对象
     * @param progressInfoVo 查询对象
     * @return 查询结果
     */
    IPage<ScreenProgressInfoDTO> screenProgressTaskInfo(Page page, @Param("progressInfoVo") ProgressInfoVo progressInfoVo);

//    /**
//     * 叶子任务根基月份和状态分组统计数量
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 统计结果
//     */
//    List<CountInfoVo> leafProgressCountGroupByMonthState(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
//
//    /**
//     * 根据条件查询进度任务滞后信息
//     *
//     * @param page                 分页对象
//     * @param progressCountParamVo 查询参数
//     * @return 查询结果
//     */
//    IPage<ProgressInfoRecordVo> lagProgressPage(Page page, @Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
//
//    /**
//     * 任务统计数量根据状态分组
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 统计结果
//     */
//    List<CountInfoVo> progressCountGroupByState(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
//
//    /**
//     * 任务统计数量根据滞后原因分组
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 统计结果
//     */
//    List<CountInfoVo> progressLagCountGroupByLagState(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
//
//    /**
//     * 查询没有滞后原因的任务数量
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 统计结果
//     */
//    int noLagReasonCount(ProgressCountParamVo progressCountParamVo);

//    /**
//     * 查询叶子任务进度list
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 查询结果
//     */
//    List<Map<String, Object>> queryLeafProgressList(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);

//    /**
//     * 查询叶子任务进度统计
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 查询结果
//     */
//    List<CountInfoVo> buildingLeafProgressCount(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
//
//    /**
//     * 查询所有任务进度统计
//     *
//     * @param progressCountParamVo 查询参数
//     * @return 查询结果
//     */
//    List<CountInfoVo> allProgressCountGroupByMonthState(@Param("progressCountParamVo") ProgressCountParamVo progressCountParamVo);
}

